Q12. Which of the following actions do you take to avoid getting sick?
# subset question data, rename columns, gather into single column
q12_df <- df %>%
select(CaseID, PPGENDER, PPAGE, ppagecat, PPETHM, PPINCIMP, PPEDUC, PPEDUCAT,
work, PPWORK, marital, PPMARIT, PPMSACAT, ppreg9, PPSTATEN, PPHOUSE, PPRENT, PPNET, Q12_1:Q12_15, weight) %>%
rename("Q12_1_Avoid.touching.my.eyes" = Q12_1,
"Q12_2_Avoid.touching.my.nose" = Q12_2,
"Q12_3_Avoid.touching.my.mouth" = Q12_3,
"Q12_4_Wash.my.hands.with.soap.more.often"= Q12_4,
"Q12_5_Use.hand.sanitizers" = Q12_5,
"Q12_6_Clean.the.surfaces.in.my.home" = Q12_6,
"Q12_7_Clean.the.surfaces.at.work" = Q12_7,
"Q12_8_Eat.nutritious.food" = Q12_8,
"Q12_9_Get.adequate.rest" = Q12_9,
"Q12_10_Get.recommended.vaccine" = Q12_10,
"Q12_11_Take.preventive.medicine" = Q12_11,
"Q12_12_Cover.my.nose.and.mouth.with.a.surgical.mask" = Q12_12,
"Q12_13_Avoid.contact.with.people.who.are.sick" = Q12_13,
"Q12_14_Avoid.crowded.places" = Q12_14,
"Q12_15_Other" = Q12_15) %>%
gather(Q12_q, Q12_r, Q12_1_Avoid.touching.my.eyes:Q12_15_Other, na.rm = T) %>%
mutate(Q12_q = as.factor(Q12_q)) %>%
mutate(Q12_r = factor(Q12_r, levels = c("Always", "Sometimes", "Never")))
# survey design
options(digits = 4)
options(survey.lonely.psu = "adjust")
des12 <- svydesign(ids = ~1, weights = ~weight, data = q12_df[is.na(q12_df$weight)==F, ])
# weighted data frame
q12 <- data.frame(svytable(~Q12_q + Q12_r + PPGENDER + ppagecat + PPETHM + PPINCIMP, des12, round = T))
# plot templates
title <- ggtitle("Which of the following actions do you take to avoid getting sick?")
## main plot
p <- ggplot(q12, aes(Q12_q, weight = Freq)) + ptext
p + geom_bar(position = 'stack') + aes(fill = Q12_r) + title + coord_flip()

p2 <- ggplot(q12, aes(Q12_q, weight = Freq)) + ptext
p2 + geom_bar(position = "fill") + aes(Q12_q, fill = Q12_r) + coord_flip()

p2 + geom_bar() + aes(Q12_r, fill = Q12_r) + facet_wrap(~Q12_q) + ptext2

p2 + geom_bar() + aes(Q12_q, fill = Q12_q) + facet_wrap(~Q12_r) + ptext2

# by gender
p2 + geom_bar() + aes(PPGENDER, fill = Q12_r) + facet_wrap(~Q12_q) + ggtitle("By gender")

p2 + geom_bar(position = "fill") + aes(PPGENDER, fill = Q12_r) + facet_wrap(~Q12_q)

p2 + geom_bar() + aes(Q12_q, fill = PPGENDER) + facet_wrap(~Q12_r)

p2 + geom_bar(position = 'fill') + aes(Q12_q, fill = PPGENDER) + facet_wrap(~Q12_r) + ggtitle("By gender")

p2 + geom_bar() + aes(PPGENDER, fill = PPGENDER) + facet_grid(Q12_q~Q12_r) + coord_flip() + ptext2

# by age group
p2 + geom_bar() + aes(ppagecat, fill = Q12_r) + facet_wrap(~Q12_q) + ggtitle("By age group")

p2 + geom_bar(position = "fill") + aes(ppagecat, fill = Q12_r) + facet_wrap(~Q12_q)

p2 + geom_bar() + aes(Q12_q, fill = ppagecat) + facet_wrap(~Q12_r)

p2 + geom_bar(position = 'fill') + aes(Q12_q, fill = ppagecat) + facet_wrap(~Q12_r) + ggtitle("By age group")

p2 + geom_bar() + aes(ppagecat, fill = ppagecat) + facet_grid(Q12_q~Q12_r) + ptext2

# by ethnic group
p2 + geom_bar() + aes(PPETHM, fill = Q12_r) + facet_wrap(~Q12_q) + ggtitle("By ethnic group")

p2 + geom_bar(position = "fill") + aes(PPETHM, fill = Q12_r) + facet_wrap(~Q12_q)

p2 + geom_bar() + aes(Q12_q, fill = PPETHM) + facet_wrap(~Q12_r)

p2 + geom_bar(position = 'fill') + aes(Q12_q, fill = PPETHM) + facet_wrap(~Q12_r) + ggtitle("By ethnic group")

p2 + geom_bar() + aes(PPETHM, fill = PPETHM) + facet_grid(Q12_q~Q12_r) + ptext2

p2 + geom_bar() + aes(Q12_r, fill = Q12_r) + facet_grid(Q12_q~PPETHM) + ptext2

# by income
p2 + geom_bar() + aes(PPINCIMP, fill = Q12_r) + facet_wrap(~Q12_q) + ggtitle("By income") + ptext2

p2 + geom_bar(position = "fill") + aes(PPINCIMP, fill = Q12_r) + facet_wrap(~Q12_q) + ptext2

p2 + geom_bar() + aes(Q12_q, fill = PPINCIMP) + facet_wrap(~Q12_r)

p2 + geom_bar(position = 'fill') + aes(Q12_q, fill = PPINCIMP) + facet_wrap(~Q12_r) + ggtitle("By income group")

p2 + geom_bar() + aes(PPINCIMP, fill = PPINCIMP) + facet_grid(Q12_q~Q12_r) + ptext2

Education, work, marital status
# update weighted data frame
q12.2 <- data.frame(svytable(~Q12_q + Q12_r + PPEDUC + PPEDUCAT + work + PPWORK + marital + PPMARIT, des12, round = T))
# restate plots
p3 <- ggplot(q12.2, aes(Q12_q, weight = Freq)) + ptext
# by education
p3 + geom_bar() + aes(PPEDUCAT, fill = Q12_r) + facet_wrap(~Q12_q) + ggtitle("By education")

p3 + geom_bar(position = "fill") + aes(PPEDUCAT, fill = Q12_r) + facet_wrap(~Q12_q)

p3 + geom_bar() + aes(Q12_q, fill = PPEDUCAT) + facet_wrap(~Q12_r)

p3 + geom_bar(position = "fill") + aes(Q12_q, fill = PPEDUCAT) + facet_wrap(~Q12_r) + ggtitle("By education")

p3 + geom_bar() + aes(PPEDUCAT, fill = PPEDUCAT) + facet_grid(Q12_q~Q12_r) + ptext2

p3 + geom_bar() + aes(Q12_r, fill = Q12_r) + facet_grid(Q12_q~PPEDUCAT) + ptext2

# by work
p3 + geom_bar() + aes(work, fill = Q12_r) + facet_wrap(~Q12_q) + ggtitle("By employment status")

p3 + geom_bar(position = "fill") + aes(work, fill = Q12_r) + facet_wrap(~Q12_q)

# by marital
p3 + geom_bar() + aes(marital, fill = Q12_r) + facet_wrap(~Q12_q) + ggtitle("By marital status")

p3 + geom_bar(position = "fill") + aes(marital, fill = Q12_r) + facet_wrap(~Q12_q)

Metro status, region, state, house type, housing status, internet availability
# update weighted data frame
q12.3 <- data.frame(svytable(~Q12_q + Q12_r + PPMSACAT + ppreg9 + PPSTATEN + PPHOUSE + PPRENT + PPNET, des12, round = T))
# restate plots
p4 <- ggplot(q12.3, aes(Q12_q, weight = Freq)) + ptext
# by metro status
p4 + geom_bar(position = "fill") + aes(Q12_r, fill = PPMSACAT) + facet_wrap(~Q12_q) + ggtitle("By metro status")

p4 + geom_bar(position = "fill") + aes(PPMSACAT, fill = Q12_r) + facet_wrap(~Q12_q)

# by region
p4 + geom_bar(position = "fill") + aes(Q12_r, fill = ppreg9) + facet_wrap(~Q12_q) + ggtitle("By region")

p4 + geom_bar() + aes(ppreg9, fill = Q12_r) + facet_wrap(~Q12_q) + ggtitle("By region")

# by state
p4 + geom_bar() + aes(Q12_r, fill = PPSTATEN) + facet_wrap(~Q12_q) + ggtitle("By state")

p4 + geom_bar() + aes(PPSTATEN, fill = Q12_q) + coord_flip() + ggtitle("By state")

# by house type
p4 + geom_bar(position = "fill") + aes(Q12_r, fill = PPHOUSE) + facet_wrap(~Q12_q)

p4 + geom_bar(position = "fill") + aes(fill = PPHOUSE) + ggtitle("By house type")

# housing status
p4 + geom_bar(position = "fill") + aes(Q12_r, fill = PPHOUSE) + facet_wrap(~Q12_q)

p4 + geom_bar() + aes(PPHOUSE, fill = Q12_r) + facet_wrap(~Q12_q) + ggtitle("By housing")

# by internet availability
p4 + geom_bar(position = "fill") + aes(Q12_r, fill = PPNET) + facet_wrap(~Q12_q)

p4 + geom_bar(position = "fill") + aes(PPNET, fill = Q12_r) + facet_wrap(~Q12_q) + ggtitle("By internet availability")

LS0tCnRpdGxlOiAnUTEyJwpvdXRwdXQ6CiAgaHRtbF9ub3RlYm9vazogCiAgICB0aGVtZTogcGFwZXIKICAgIHRvYzogeWVzCiAgICB0b2NfZGVwdGg6IDIKICBodG1sX2RvY3VtZW50OgogICAgZmlnX2hlaWdodDogNQogICAgZmlnX3dpZHRoOiA3CiAgICB0aGVtZTogcGFwZXIKICAgIGtlZXBfbWQ6IHllcwogICAgdG9jOiB5ZXMKICAgIHRvY19kZXB0aDogMgotLS0KCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZ9CiMjIFNldHVwLgprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFQsIGNhY2hlID0gVCwgY2FjaGUuY29tbWVudHMgPSBGLCB3YXJuaW5nID0gRiwgbWVzc2FnZSA9IEYsIHNpemUgPSAic21hbGwiKQpybShsaXN0ID0gbHMoYWxsLm5hbWVzID0gVCkpCmxpYnJhcnkocm1hcmtkb3duKTsgbGlicmFyeShrbml0cik7IGxpYnJhcnkoZ3JpZEV4dHJhKQpsaWJyYXJ5KHRpZHlyKTsgbGlicmFyeShkcGx5cik7IGxpYnJhcnkoZ2dwbG90Mik7IGxpYnJhcnkoc3VydmV5KQpgYGAKCmBgYHtyIGxvYWQtZGF0YSwgaW5jbHVkZT1GfQojIyBMb2FkIGRhdGEuCmxvYWQoIn4vZ2l0L2ZsdS1zdXJ2ZXkvZGF0YS9jbGVhbmluZzIuUkRhdGEiKQpsb2FkKCJ+L2dpdC9mbHUtc3VydmV5L2RhdGEvcmVjb2RpbmcuUkRhdGEiKSAgIyBsb2FkICJkYXRhciIKZGYgPC0gZGF0YXIgICMgcmVjb2RlZCB2YXJpYWJsZXMKYGBgCgpgYGB7ciBncm91cC1kYXRhLCBpbmNsdWRlPUZ9CiMjIFJlZ3JvdXAgdmFyaWFibGVzLgojIGluY29tZQppbmNvbWUubWFwIDwtIGMocmVwKCJ1bmRlciAkMTBrIiwgMyksIHJlcCgiJDEwayB0byAkMjVrIiwgNCksCiAgICAgICAgICAgICAgICByZXAoIiQyNWsgdG8gJDUwayIsIDQpLCByZXAoIiQ1MGsgdG8gJDc1ayIsIDIpLAogICAgICAgICAgICAgICAgcmVwKCIkNzVrIHRvICQxMDBrIiwgMiksIHJlcCgiJDEwMGsgdG8gJDE1MGsiLCAyKSwKICAgICAgICAgICAgICAgIHJlcCgib3ZlciAkMTUwayIsIDIpKQpkZiRpbmNvbWUgPC0gY29kZShkYXRhciRQUElOQ0lNUCwgaW5jb21lLm1hcCwgInVuZGVyICQxMGsiKQppbmNvbWUubGFiIDwtIGMoInVuZGVyICQxMGsiLCAiJDEwayB0byAkMjVrIiwgIiQyNWsgdG8gJDUwayIsCiAgICAgICAgICAgICAgICAiJDUwayB0byAkNzVrIiwgIiQ3NWsgdG8gJDEwMGsiLCAiJDEwMGsgdG8gJDE1MGsiLAogICAgICAgICAgICAgICAgIm92ZXIgJDE1MGsiKQpkZiRpbmNvbWUgPC0gZmFjdG9yKGRmJGluY29tZSwgbGV2ZWxzID0gaW5jb21lLmxhYikKCiMgbWFyaXRhbCBzdGF1cwptYXJpdGFsLm1hcCA8LSBjKCJzaW5nbGUiLCAicGFydG5lcmVkIiwgInBhcnRuZXJlZCIsICJzaW5nbGUiLCAic2luZ2xlIiwgInNpbmdsZSIpCmRmJG1hcml0YWwgPC0gY29kZShkYXRhZiRQUE1BUklULCBtYXJpdGFsLm1hcCwgInNpbmdsZSIpCgojIHdvcmsgc3RhdHVzCndvcmsubWFwIDwtIGMocmVwKCJ1bmVtcGxveWVkIiwgNSksCiAgICAgICAgICAgICAgcmVwKCJlbXBsb3llZCIsIDIpKQpkZiR3b3JrIDwtIGNvZGUoZGF0YWYkUFBXT1JLLCB3b3JrLm1hcCwgInVuZW1wbG95ZWQiKQpgYGAKCmBgYHtyIGRlcy1zdXJ2ZXl9CiMjIENyZWF0ZSBzdXJ2ZXkgb2JqZWN0LgpvcHRpb25zKGRpZ2l0cyA9IDQpCm9wdGlvbnMoc3VydmV5LmxvbmVseS5wc3UgPSAiYWRqdXN0IikKCmRlcyA8LSBzdnlkZXNpZ24oaWRzID0gfjEsIHdlaWdodHMgPSB+d2VpZ2h0LCBkYXRhID0gZGZbaXMubmEoZGYkd2VpZ2h0KT09RiwgXSkKYGBgCgpgYGB7ciBwbG90LXRlbXAsIGluY2x1ZGU9Rn0KIyMgQ3JlYXRlIGdncGxvdCB0ZW1wbGF0ZXMuCnB0ZXh0IDwtIHRoZW1lKGF4aXMudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gcmVsKDAuOSkpLAogICAgICAgICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCBoanVzdCA9IDEpKQpwdGV4dDIgPC0gcHRleHQgKyB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfYmxhbmsoKSkKYGBgCgoKIyMgUTEyLiBXaGljaCBvZiB0aGUgZm9sbG93aW5nIGFjdGlvbnMgZG8geW91IHRha2UgdG8gYXZvaWQgZ2V0dGluZyBzaWNrPwoKCmBgYHtyIHExMi1kYXRhfQojIHN1YnNldCBxdWVzdGlvbiBkYXRhLCByZW5hbWUgY29sdW1ucywgZ2F0aGVyIGludG8gc2luZ2xlIGNvbHVtbgpxMTJfZGYgPC0gZGYgJT4lCiAgc2VsZWN0KENhc2VJRCwgUFBHRU5ERVIsIFBQQUdFLCBwcGFnZWNhdCwgUFBFVEhNLCBQUElOQ0lNUCwgUFBFRFVDLCBQUEVEVUNBVCwKICAgICAgICAgd29yaywgUFBXT1JLLCBtYXJpdGFsLCBQUE1BUklULCBQUE1TQUNBVCwgcHByZWc5LCBQUFNUQVRFTiwgUFBIT1VTRSwgUFBSRU5ULCBQUE5FVCwgUTEyXzE6UTEyXzE1LCB3ZWlnaHQpICU+JQogICAgcmVuYW1lKCJRMTJfMV9Bdm9pZC50b3VjaGluZy5teS5leWVzIiA9IFExMl8xLAogICAgICAgICAiUTEyXzJfQXZvaWQudG91Y2hpbmcubXkubm9zZSIgPSBRMTJfMiwKICAgICAgICAgIlExMl8zX0F2b2lkLnRvdWNoaW5nLm15Lm1vdXRoIiA9CVExMl8zLAogICAgICAgICAiUTEyXzRfV2FzaC5teS5oYW5kcy53aXRoLnNvYXAubW9yZS5vZnRlbiI9IFExMl80LAogICAgICAgICAiUTEyXzVfVXNlLmhhbmQuc2FuaXRpemVycyIgPSBRMTJfNSwKICAgICAgICAgIlExMl82X0NsZWFuLnRoZS5zdXJmYWNlcy5pbi5teS5ob21lIiA9CVExMl82LAogICAgICAgICAiUTEyXzdfQ2xlYW4udGhlLnN1cmZhY2VzLmF0LndvcmsiID0gUTEyXzcsCiAgICAgICAgICJRMTJfOF9FYXQubnV0cml0aW91cy5mb29kIiA9IFExMl84LAogICAgICAgICAiUTEyXzlfR2V0LmFkZXF1YXRlLnJlc3QiID0gUTEyXzksCiAgICAgICAgICJRMTJfMTBfR2V0LnJlY29tbWVuZGVkLnZhY2NpbmUiID0JUTEyXzEwLAogICAgICAgICAiUTEyXzExX1Rha2UucHJldmVudGl2ZS5tZWRpY2luZSIgPSBRMTJfMTEsCiAgICAgICAgICJRMTJfMTJfQ292ZXIubXkubm9zZS5hbmQubW91dGgud2l0aC5hLnN1cmdpY2FsLm1hc2siID0gUTEyXzEyLAogICAgICAgICAiUTEyXzEzX0F2b2lkLmNvbnRhY3Qud2l0aC5wZW9wbGUud2hvLmFyZS5zaWNrIiA9IFExMl8xMywKICAgICAgICAgIlExMl8xNF9Bdm9pZC5jcm93ZGVkLnBsYWNlcyIgPSBRMTJfMTQsCiAgICAgICAgICJRMTJfMTVfT3RoZXIiID0gUTEyXzE1KSAlPiUKICBnYXRoZXIoUTEyX3EsIFExMl9yLCBRMTJfMV9Bdm9pZC50b3VjaGluZy5teS5leWVzOlExMl8xNV9PdGhlciwgbmEucm0gPSBUKSAlPiUKICBtdXRhdGUoUTEyX3EgPSBhcy5mYWN0b3IoUTEyX3EpKSAlPiUKICBtdXRhdGUoUTEyX3IgPSBmYWN0b3IoUTEyX3IsIGxldmVscyA9IGMoIkFsd2F5cyIsICJTb21ldGltZXMiLCAiTmV2ZXIiKSkpCgojIHN1cnZleSBkZXNpZ24Kb3B0aW9ucyhkaWdpdHMgPSA0KQpvcHRpb25zKHN1cnZleS5sb25lbHkucHN1ID0gImFkanVzdCIpCmRlczEyIDwtIHN2eWRlc2lnbihpZHMgPSB+MSwgd2VpZ2h0cyA9IH53ZWlnaHQsIGRhdGEgPSBxMTJfZGZbaXMubmEocTEyX2RmJHdlaWdodCk9PUYsIF0pCmBgYAoKYGBge3IgcTEyLXBsb3QtMSwgZmlnLmhlaWdodD00LCBmaWcud2lkdGg9OH0KIyB3ZWlnaHRlZCBkYXRhIGZyYW1lCnExMiA8LSBkYXRhLmZyYW1lKHN2eXRhYmxlKH5RMTJfcSArIFExMl9yICsgUFBHRU5ERVIgKyBwcGFnZWNhdCArIFBQRVRITSArIFBQSU5DSU1QLCBkZXMxMiwgcm91bmQgPSBUKSkKCiMgcGxvdCB0ZW1wbGF0ZXMKdGl0bGUgPC0gZ2d0aXRsZSgiV2hpY2ggb2YgdGhlIGZvbGxvd2luZyBhY3Rpb25zIGRvIHlvdSB0YWtlIHRvIGF2b2lkIGdldHRpbmcgc2ljaz8iKQoKIyMgbWFpbiBwbG90CnAgPC0gZ2dwbG90KHExMiwgYWVzKFExMl9xLCB3ZWlnaHQgPSBGcmVxKSkgKyBwdGV4dApwICsgZ2VvbV9iYXIocG9zaXRpb24gPSAnc3RhY2snKSArIGFlcyhmaWxsID0gUTEyX3IpICsgdGl0bGUgKyBjb29yZF9mbGlwKCkKCgpgYGAKCmBgYHtyIHExMi1wbG90LTFiLCBmaWcuaGVpZ2h0PTQsIGZpZy53aWR0aD03fQpwMiA8LSBnZ3Bsb3QocTEyLCBhZXMoUTEyX3EsIHdlaWdodCA9IEZyZXEpKSArIHB0ZXh0CnAyICsgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsgYWVzKFExMl9xLCBmaWxsID0gUTEyX3IpICsgY29vcmRfZmxpcCgpCnAyICsgZ2VvbV9iYXIoKSArIGFlcyhRMTJfciwgZmlsbCA9IFExMl9yKSArIGZhY2V0X3dyYXAoflExMl9xKSArIHB0ZXh0MgpwMiArIGdlb21fYmFyKCkgKyBhZXMoUTEyX3EsIGZpbGwgPSBRMTJfcSkgKyBmYWNldF93cmFwKH5RMTJfcikgKyBwdGV4dDIKCmBgYAoKCmBgYHtyfQojIGJ5IGdlbmRlcgpwMiArIGdlb21fYmFyKCkgKyBhZXMoUFBHRU5ERVIsIGZpbGwgPSBRMTJfcikgKyBmYWNldF93cmFwKH5RMTJfcSkgKyBnZ3RpdGxlKCJCeSBnZW5kZXIiKQpwMiArIGdlb21fYmFyKHBvc2l0aW9uID0gImZpbGwiKSArIGFlcyhQUEdFTkRFUiwgZmlsbCA9IFExMl9yKSArIGZhY2V0X3dyYXAoflExMl9xKQpwMiArIGdlb21fYmFyKCkgKyBhZXMoUTEyX3EsIGZpbGwgPSBQUEdFTkRFUikgKyBmYWNldF93cmFwKH5RMTJfcikKcDIgKyBnZW9tX2Jhcihwb3NpdGlvbiA9ICdmaWxsJykgKyBhZXMoUTEyX3EsIGZpbGwgPSBQUEdFTkRFUikgKyBmYWNldF93cmFwKH5RMTJfcikgKyBnZ3RpdGxlKCJCeSBnZW5kZXIiKQpwMiArIGdlb21fYmFyKCkgKyBhZXMoUFBHRU5ERVIsIGZpbGwgPSBQUEdFTkRFUikgKyBmYWNldF9ncmlkKFExMl9xflExMl9yKSArIGNvb3JkX2ZsaXAoKSArIHB0ZXh0MgoKYGBgCgpgYGB7cn0KIyBieSBhZ2UgZ3JvdXAKcDIgKyBnZW9tX2JhcigpICsgYWVzKHBwYWdlY2F0LCBmaWxsID0gUTEyX3IpICsgZmFjZXRfd3JhcCh+UTEyX3EpICsgZ2d0aXRsZSgiQnkgYWdlIGdyb3VwIikKcDIgKyBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKyBhZXMocHBhZ2VjYXQsIGZpbGwgPSBRMTJfcikgKyBmYWNldF93cmFwKH5RMTJfcSkKcDIgKyBnZW9tX2JhcigpICsgYWVzKFExMl9xLCBmaWxsID0gcHBhZ2VjYXQpICsgZmFjZXRfd3JhcCh+UTEyX3IpCnAyICsgZ2VvbV9iYXIocG9zaXRpb24gPSAnZmlsbCcpICsgYWVzKFExMl9xLCBmaWxsID0gcHBhZ2VjYXQpICsgZmFjZXRfd3JhcCh+UTEyX3IpICsgZ2d0aXRsZSgiQnkgYWdlIGdyb3VwIikKcDIgKyBnZW9tX2JhcigpICsgYWVzKHBwYWdlY2F0LCBmaWxsID0gcHBhZ2VjYXQpICsgZmFjZXRfZ3JpZChRMTJfcX5RMTJfcikgKyBwdGV4dDIKCmBgYAoKYGBge3J9CiMgYnkgZXRobmljIGdyb3VwCnAyICsgZ2VvbV9iYXIoKSArIGFlcyhQUEVUSE0sIGZpbGwgPSBRMTJfcikgKyBmYWNldF93cmFwKH5RMTJfcSkgKyBnZ3RpdGxlKCJCeSBldGhuaWMgZ3JvdXAiKQpwMiArIGdlb21fYmFyKHBvc2l0aW9uID0gImZpbGwiKSArIGFlcyhQUEVUSE0sIGZpbGwgPSBRMTJfcikgKyBmYWNldF93cmFwKH5RMTJfcSkKcDIgKyBnZW9tX2JhcigpICsgYWVzKFExMl9xLCBmaWxsID0gUFBFVEhNKSArIGZhY2V0X3dyYXAoflExMl9yKQpwMiArIGdlb21fYmFyKHBvc2l0aW9uID0gJ2ZpbGwnKSArIGFlcyhRMTJfcSwgZmlsbCA9IFBQRVRITSkgKyBmYWNldF93cmFwKH5RMTJfcikgKyBnZ3RpdGxlKCJCeSBldGhuaWMgZ3JvdXAiKQpwMiArIGdlb21fYmFyKCkgKyBhZXMoUFBFVEhNLCBmaWxsID0gUFBFVEhNKSArIGZhY2V0X2dyaWQoUTEyX3F+UTEyX3IpICsgcHRleHQyCnAyICsgZ2VvbV9iYXIoKSArIGFlcyhRMTJfciwgZmlsbCA9IFExMl9yKSArIGZhY2V0X2dyaWQoUTEyX3F+UFBFVEhNKSArIHB0ZXh0MgoKYGBgCgpgYGB7cn0KIyBieSBpbmNvbWUKcDIgKyBnZW9tX2JhcigpICsgYWVzKFBQSU5DSU1QLCBmaWxsID0gUTEyX3IpICsgZmFjZXRfd3JhcCh+UTEyX3EpICsgZ2d0aXRsZSgiQnkgaW5jb21lIikgKyBwdGV4dDIKcDIgKyBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKyBhZXMoUFBJTkNJTVAsIGZpbGwgPSBRMTJfcikgKyBmYWNldF93cmFwKH5RMTJfcSkgKyBwdGV4dDIKcDIgKyBnZW9tX2JhcigpICsgYWVzKFExMl9xLCBmaWxsID0gUFBJTkNJTVApICsgZmFjZXRfd3JhcCh+UTEyX3IpCnAyICsgZ2VvbV9iYXIocG9zaXRpb24gPSAnZmlsbCcpICsgYWVzKFExMl9xLCBmaWxsID0gUFBJTkNJTVApICsgZmFjZXRfd3JhcCh+UTEyX3IpICsgZ2d0aXRsZSgiQnkgaW5jb21lIGdyb3VwIikKcDIgKyBnZW9tX2JhcigpICsgYWVzKFBQSU5DSU1QLCBmaWxsID0gUFBJTkNJTVApICsgZmFjZXRfZ3JpZChRMTJfcX5RMTJfcikgKyBwdGV4dDIKCmBgYAoKCiMjIyBFZHVjYXRpb24sIHdvcmssIG1hcml0YWwgc3RhdHVzCgpgYGB7ciBxMTItcGxvdC0yfQojIHVwZGF0ZSB3ZWlnaHRlZCBkYXRhIGZyYW1lCnExMi4yIDwtIGRhdGEuZnJhbWUoc3Z5dGFibGUoflExMl9xICsgUTEyX3IgKyBQUEVEVUMgKyBQUEVEVUNBVCArIHdvcmsgKyBQUFdPUksgKyBtYXJpdGFsICsgUFBNQVJJVCwgZGVzMTIsIHJvdW5kID0gVCkpCgojIHJlc3RhdGUgcGxvdHMKcDMgPC0gZ2dwbG90KHExMi4yLCBhZXMoUTEyX3EsIHdlaWdodCA9IEZyZXEpKSArIHB0ZXh0CmBgYAoKYGBge3IgcTEyLXBsb3QtMmJ9CiMgYnkgZWR1Y2F0aW9uCnAzICsgZ2VvbV9iYXIoKSArIGFlcyhQUEVEVUNBVCwgZmlsbCA9IFExMl9yKSArIGZhY2V0X3dyYXAoflExMl9xKSArIGdndGl0bGUoIkJ5IGVkdWNhdGlvbiIpCnAzICsgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsgYWVzKFBQRURVQ0FULCBmaWxsID0gUTEyX3IpICsgZmFjZXRfd3JhcCh+UTEyX3EpCnAzICsgZ2VvbV9iYXIoKSArIGFlcyhRMTJfcSwgZmlsbCA9IFBQRURVQ0FUKSArIGZhY2V0X3dyYXAoflExMl9yKQpwMyArIGdlb21fYmFyKHBvc2l0aW9uID0gImZpbGwiKSArIGFlcyhRMTJfcSwgZmlsbCA9IFBQRURVQ0FUKSArIGZhY2V0X3dyYXAoflExMl9yKSArIGdndGl0bGUoIkJ5IGVkdWNhdGlvbiIpCnAzICsgZ2VvbV9iYXIoKSArIGFlcyhQUEVEVUNBVCwgZmlsbCA9IFBQRURVQ0FUKSArIGZhY2V0X2dyaWQoUTEyX3F+UTEyX3IpICsgcHRleHQyCnAzICsgZ2VvbV9iYXIoKSArIGFlcyhRMTJfciwgZmlsbCA9IFExMl9yKSArIGZhY2V0X2dyaWQoUTEyX3F+UFBFRFVDQVQpICsgcHRleHQyCgpgYGAKCmBgYHtyfQojIGJ5IHdvcmsKcDMgKyBnZW9tX2JhcigpICsgYWVzKHdvcmssIGZpbGwgPSBRMTJfcikgKyBmYWNldF93cmFwKH5RMTJfcSkgKyBnZ3RpdGxlKCJCeSBlbXBsb3ltZW50IHN0YXR1cyIpCnAzICsgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsgYWVzKHdvcmssIGZpbGwgPSBRMTJfcikgKyBmYWNldF93cmFwKH5RMTJfcSkKCmBgYAoKYGBge3J9CiMgYnkgbWFyaXRhbApwMyArIGdlb21fYmFyKCkgKyBhZXMobWFyaXRhbCwgZmlsbCA9IFExMl9yKSArIGZhY2V0X3dyYXAoflExMl9xKSArIGdndGl0bGUoIkJ5IG1hcml0YWwgc3RhdHVzIikKcDMgKyBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKyBhZXMobWFyaXRhbCwgZmlsbCA9IFExMl9yKSArIGZhY2V0X3dyYXAoflExMl9xKQoKYGBgCgojIyMgTWV0cm8gc3RhdHVzLCByZWdpb24sIHN0YXRlLCBob3VzZSB0eXBlLCBob3VzaW5nIHN0YXR1cywgaW50ZXJuZXQgYXZhaWxhYmlsaXR5CgpgYGB7ciBxMTItcGxvdC0zfQojIHVwZGF0ZSB3ZWlnaHRlZCBkYXRhIGZyYW1lCnExMi4zIDwtIGRhdGEuZnJhbWUoc3Z5dGFibGUoflExMl9xICsgUTEyX3IgKyBQUE1TQUNBVCArIHBwcmVnOSArIFBQU1RBVEVOICsgUFBIT1VTRSArIFBQUkVOVCArIFBQTkVULCBkZXMxMiwgcm91bmQgPSBUKSkKCiMgcmVzdGF0ZSBwbG90cwpwNCA8LSBnZ3Bsb3QocTEyLjMsIGFlcyhRMTJfcSwgd2VpZ2h0ID0gRnJlcSkpICsgcHRleHQKYGBgCgpgYGB7ciBxMTItcGxvdC0zYn0KIyBieSBtZXRybyBzdGF0dXMKcDQgKyBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKyBhZXMoUTEyX3IsIGZpbGwgPSBQUE1TQUNBVCkgKyBmYWNldF93cmFwKH5RMTJfcSkgKyBnZ3RpdGxlKCJCeSBtZXRybyBzdGF0dXMiKQpwNCArIGdlb21fYmFyKHBvc2l0aW9uID0gImZpbGwiKSArIGFlcyhQUE1TQUNBVCwgZmlsbCA9IFExMl9yKSArIGZhY2V0X3dyYXAoflExMl9xKQoKIyBieSByZWdpb24KcDQgKyBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKyBhZXMoUTEyX3IsIGZpbGwgPSBwcHJlZzkpICsgZmFjZXRfd3JhcCh+UTEyX3EpICsgZ2d0aXRsZSgiQnkgcmVnaW9uIikKcDQgKyBnZW9tX2JhcigpICsgYWVzKHBwcmVnOSwgZmlsbCA9IFExMl9yKSArIGZhY2V0X3dyYXAoflExMl9xKSArIGdndGl0bGUoIkJ5IHJlZ2lvbiIpCgojIGJ5IHN0YXRlCnA0ICsgZ2VvbV9iYXIoKSArIGFlcyhRMTJfciwgZmlsbCA9IFBQU1RBVEVOKSArIGZhY2V0X3dyYXAoflExMl9xKSArIGdndGl0bGUoIkJ5IHN0YXRlIikKcDQgKyBnZW9tX2JhcigpICsgYWVzKFBQU1RBVEVOLCBmaWxsID0gUTEyX3EpICsgY29vcmRfZmxpcCgpICsgZ2d0aXRsZSgiQnkgc3RhdGUiKQpgYGAKCmBgYHtyfQojIGJ5IGhvdXNlIHR5cGUKcDQgKyBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKyBhZXMoUTEyX3IsIGZpbGwgPSBQUEhPVVNFKSArIGZhY2V0X3dyYXAoflExMl9xKQpwNCArIGdlb21fYmFyKHBvc2l0aW9uID0gImZpbGwiKSArIGFlcyhmaWxsID0gUFBIT1VTRSkgKyBnZ3RpdGxlKCJCeSBob3VzZSB0eXBlIikKCiMgaG91c2luZyBzdGF0dXMKcDQgKyBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKyBhZXMoUTEyX3IsIGZpbGwgPSBQUEhPVVNFKSArIGZhY2V0X3dyYXAoflExMl9xKQpwNCArIGdlb21fYmFyKCkgKyBhZXMoUFBIT1VTRSwgZmlsbCA9IFExMl9yKSArIGZhY2V0X3dyYXAoflExMl9xKSArIGdndGl0bGUoIkJ5IGhvdXNpbmciKQoKIyBieSBpbnRlcm5ldCBhdmFpbGFiaWxpdHkKcDQgKyBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKyBhZXMoUTEyX3IsIGZpbGwgPSBQUE5FVCkgKyBmYWNldF93cmFwKH5RMTJfcSkKcDQgKyBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKyBhZXMoUFBORVQsIGZpbGwgPSBRMTJfcikgKyBmYWNldF93cmFwKH5RMTJfcSkgKyBnZ3RpdGxlKCJCeSBpbnRlcm5ldCBhdmFpbGFiaWxpdHkiKQoKYGBgCgoKCgo=